package com.hmall.item.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hmall.item.domain.dto.OrderDetailDTO;
import com.hmall.item.domain.po.Item;
import org.apache.ibatis.annotations.Update;

/**
 * 商品数据访问接口
 * 继承自MyBatis-Plus的BaseMapper，提供基础CRUD操作
 * 扩展自定义方法实现商品库存扣减功能
 */
public interface ItemMapper extends BaseMapper<Item> {

    /**
     * 扣减商品库存
     * @param orderDetail 订单明细DTO，包含商品ID和购买数量
     * @return 影响的行数（1表示成功，0表示库存不足或商品不存在）
     * @sql 执行SQL：UPDATE item SET stock = stock - #{num} WHERE id = #{itemId}
     * @note 该操作需在事务中执行，确保库存扣减与订单创建的一致性
     */
    @Update("UPDATE item SET stock = stock - #{num} WHERE id = #{itemId}")
    void updateStock(OrderDetailDTO orderDetail);
}